package pe.edu.upc.dsd.grupotec.jaxrs;

import java.util.ArrayList;
import java.util.List;

import javax.ws.rs.Consumes;


import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.QueryParam;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jms.core.JmsTemplate;

import pe.edu.upc.dsd.grupotec.model.Ciudad;
import pe.edu.upc.dsd.grupotec.model.Ticket;
import pe.edu.upc.dsd.grupotec.model.Vuelo;
import pe.edu.upc.dsd.grupotec.service.VueloService;

import com.google.gson.Gson;

@Path("vuelos")
@Consumes({ MediaType.APPLICATION_JSON, MediaType.TEXT_PLAIN })
@Produces({ MediaType.APPLICATION_JSON, MediaType.TEXT_PLAIN })
public class VueloController {
	
	private static final Logger logger = Logger.getLogger(VueloController.class);
	
	@Autowired
	private VueloService vueloService;
	
	private Gson gson = new Gson();
	
	@GET
	//se devolvera la lista de vuelos pa llenar en los combos
	public String listaCiudades() {
		
		Ciudad ciudad=new Ciudad();
		ciudad.setIdCiudad(10);
		ciudad.setNombreCiudad("Lima");
		
		Ciudad ciudad2=new Ciudad();
		ciudad2.setIdCiudad(10);
		ciudad2.setNombreCiudad("arequipa");
		
		Ciudad ciudad3=new Ciudad();
		ciudad3.setIdCiudad(10);
		ciudad3.setNombreCiudad("piura");
		
		
		List lista_ciudades=new ArrayList();
		lista_ciudades.add(ciudad);
		lista_ciudades.add(ciudad2);
		lista_ciudades.add(ciudad3);
		
		Gson gson = new Gson();
		return gson.toJson(lista_ciudades);
	}
	
	@GET
	@Path("/itinerario")
	//se consultaran los vuelos a partir de un ID
	public String verItineario(@QueryParam("origen") String origen,@QueryParam("destino") String destino,@QueryParam("fecha") String fecha) {
		System.out.println(origen);
			
		List<Vuelo> lista_vuelos=new ArrayList<Vuelo>();
		
		Vuelo v = new Vuelo(); 
			v.setIdAeropuertoOrigen("Lima");
			v.setIdAeropuertoDestino("Arequipa");
		    v.setFechaPartida("10:00");
		    v.setFechaPartida("12:00");
		
			Vuelo v2 = new Vuelo();
			v2.setIdAeropuertoOrigen("Lima");		
			v2.setIdAeropuertoDestino("Arequipa");
			v2.setFechaPartida("15:00");
		    v2.setFechaPartida("17:00");
			
			Vuelo v3 = new Vuelo();
			v3.setIdAeropuertoOrigen("Lima");		
			v3.setIdAeropuertoDestino("Arequipa");
			v3.setFechaPartida("19:00");
		    v3.setFechaPartida("21:00");
		 
			List itinerario=new ArrayList();
			itinerario.add(v);
			itinerario.add(v2);
			itinerario.add(v3);
			
			Gson gson = new Gson();
			return gson.toJson(itinerario);
		 
	}

	
	@GET
	@Path("/detalle")
	//se consultaran los detalles de un vuelo a partir del id
	public String detalleVuelo(@QueryParam("") Vuelo vuelo) {
		
		System.out.println("vuelo " + vuelo.getIdVuelo());
		
		Vuelo v = new Vuelo();		
		
		if(vuelo.getIdVuelo().equals("10")){
			v.setIdAeropuertoOrigen("Lima");
			v.setIdAeropuertoDestino("Arequipa");
		}
		
		if(vuelo.getIdVuelo().equals("11")){
			v.setIdAeropuertoOrigen("Trujillo");		
			v.setIdAeropuertoDestino("Moquegua");
		}
		
		if(vuelo.getIdVuelo().equals("12")){
			v.setIdAeropuertoOrigen("Tacna");		
			v.setIdAeropuertoDestino("callao");
		}
		 
		
		
		
		Gson gson = new Gson();
		return gson.toJson(v);
	}

	
	
	@Autowired
	private JmsTemplate jmsTemplate;
	
	@GET
	@Path("/registro")
	public String grabarTicket(@QueryParam("") pe.edu.upc.dsd.grupotec.model.Ticket ticket){
		try {
			
			
			
			Gson gson = new Gson();
			jmsTemplate.convertAndSend("cola_grupotec",gson.toJson(ticket));
			return gson.toJson(ticket);
			
			
			
		} catch (Exception e) {
			e.printStackTrace();
			return gson.toJson("Error");
		}
	}

	
	

}
